import pandas as pd

# 文件路径
file_path = "C:\\Users\\50388\\Desktop\\9月份\\日销售数据\\每日统计20250401-20250401.xlsx"

# 1. 读取“当日打卡情况”工作表数据
df_attendance = pd.read_excel(file_path, sheet_name="当日打卡情况")

# 定义判断第一次打卡是否正常的函数
def check_clock_in(row):
    # 如果打卡时间为 "-" 或打卡结果为 "尚未打卡"，则视为异常
    if row["第1次上班"] == "-" or row["Unnamed: 9"] == "尚未打卡":
        return "异常"
    else:
        return "正常"

# 应用函数，新增“上班打卡状态”列
df_attendance["上班打卡状态"] = df_attendance.apply(check_clock_in, axis=1)

# 2. 筛选出打卡正常的员工
df_normal = df_attendance[df_attendance["上班打卡状态"] == "正常"]

# 3. 读取“计件单价”工作表数据
df_unit_price = pd.read_excel(file_path, sheet_name="计件单价")
# 此表中包含“菜品”、“计件工资”、“档口”

# 4. 合并打卡正常员工信息与计件单价数据
# 依据员工的“职务”（列名“Unnamed: 3”）与计件单价表中的“档口”直接匹配
df_merged = pd.merge(df_normal, df_unit_price, left_on="Unnamed: 3", right_on="档口", how="left")

# 5. 读取“菜品销量”工作表数据
df_sales = pd.read_excel(file_path, sheet_name="菜品销量")
# 此表中主要包含“菜品”和“销量”

# 6. 合并菜品销量数据（依据菜品名称）
df_final = pd.merge(df_merged, df_sales[['菜品', '销量']], on='菜品', how='left')

# 7. 计算每个匹配记录的计件工资金额 = 计件工资 * 菜品销量
df_final["计件工资金额"] = df_final["计件工资"] * df_final["销量"]

# 8. 汇总每个员工的计件工资
employee_wage = df_final.groupby("姓名")["计件工资金额"].sum().reset_index()

# 重命名列
df_final = df_final.rename(columns={"Unnamed: 3": "档口"})

# 9. 将结果写入新的 Excel 文件
output_file = "C:\\Users\\50388\\Desktop\\9月份\\日销售数据\\计件工资统计.xlsx"  # 这里请替换成你的实际路径
with pd.ExcelWriter(output_file) as writer:
    # 写入汇总表
    employee_wage.to_excel(writer, sheet_name="汇总", index=False)
    # 写入详细记录表
    df_final[["姓名", "档口", "菜品", "计件工资", "销量", "计件工资金额"]].to_excel(writer, sheet_name="详细记录", index=False)

print("数据已成功输出到文件：", output_file)
